{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9a239b1c-b379-4166-9993-c814f3807d43",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=== 阶乘计算 ===\n",
      "5! = 120\n",
      "0! = 1\n",
      "10! = 3628800\n",
      "\n",
      "=== 素数判断 ===\n",
      "2 是素数: True\n",
      "3 是素数: True\n",
      "4 是素数: False\n",
      "17 是素数: True\n",
      "25 是素数: False\n",
      "29 是素数: True\n",
      "100 是素数: False\n",
      "\n",
      "=== 字符串反转 ===\n",
      "'hello' 反转后: 'olleh'\n",
      "'上海大学' 反转后: '学大海上'\n",
      "'python' 反转后: 'nohtyp'\n",
      "'12345' 反转后: '54321'\n",
      "\n",
      "=== 斐波那契数列 ===\n",
      "前10项斐波那契数列: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]\n",
      "前5项斐波那契数列: [0, 1, 1, 2, 3]\n",
      "\n",
      "=== 找出列表最大值 ===\n",
      "列表 [1, 5, 3, 9, 2] 的最大值是: 9\n",
      "列表 [-1, -5, -3] 的最大值是: -1\n",
      "列表 [10] 的最大值是: 10\n",
      "列表 [3.14, 2.71, 1.41] 的最大值是: 3.14\n",
      "\n",
      "=== 综合测试 ===\n",
      "7的阶乘: 5040\n",
      "23是素数: True\n",
      "'上海大学'反转: 学大海上\n",
      "斐波那契前8项: [0, 1, 1, 2, 3, 5, 8, 13]\n",
      "列表[45, 12, 89, 34, 67]的最大值: 89\n"
     ]
    }
   ],
   "source": [
    "# 6. 计算阶乘\n",
    "def factorial(n):\n",
    "    \"\"\"\n",
    "    计算正整数n的阶乘\n",
    "    \"\"\"\n",
    "    if n < 0:\n",
    "        return \"输入必须为正整数\"\n",
    "    result = 1\n",
    "    for i in range(1, n + 1):\n",
    "        result *= i\n",
    "    return result\n",
    "\n",
    "# 测试阶乘函数\n",
    "print(\"=== 阶乘计算 ===\")\n",
    "print(f\"5! = {factorial(5)}\")\n",
    "print(f\"0! = {factorial(0)}\")\n",
    "print(f\"10! = {factorial(10)}\")\n",
    "print()\n",
    "\n",
    "# 7. 判断素数\n",
    "def is_prime(n):\n",
    "    \"\"\"\n",
    "    判断一个正整数是否为素数\n",
    "    \"\"\"\n",
    "    if n <= 1:\n",
    "        return False\n",
    "    if n == 2:\n",
    "        return True\n",
    "    if n % 2 == 0:\n",
    "        return False\n",
    "    \n",
    "    # 检查从3到sqrt(n)的所有奇数\n",
    "    for i in range(3, int(n**0.5) + 1, 2):\n",
    "        if n % i == 0:\n",
    "            return False\n",
    "    return True\n",
    "\n",
    "# 测试素数判断函数\n",
    "print(\"=== 素数判断 ===\")\n",
    "test_numbers = [2, 3, 4, 17, 25, 29, 100]\n",
    "for num in test_numbers:\n",
    "    print(f\"{num} 是素数: {is_prime(num)}\")\n",
    "print()\n",
    "\n",
    "# 8. 反转字符串\n",
    "def reverse_string(s):\n",
    "    \"\"\"\n",
    "    将输入的字符串反转并返回结果\n",
    "    \"\"\"\n",
    "    return s[::-1]\n",
    "\n",
    "# 测试字符串反转函数\n",
    "print(\"=== 字符串反转 ===\")\n",
    "test_strings = [\"hello\", \"上海大学\", \"python\", \"12345\"]\n",
    "for s in test_strings:\n",
    "    print(f\"'{s}' 反转后: '{reverse_string(s)}'\")\n",
    "print()\n",
    "\n",
    "# 9. 斐波那契数列\n",
    "def fibonacci(n):\n",
    "    \"\"\"\n",
    "    生成斐波那契数列的前n项\n",
    "    \"\"\"\n",
    "    if n <= 0:\n",
    "        return []\n",
    "    elif n == 1:\n",
    "        return [0]\n",
    "    elif n == 2:\n",
    "        return [0, 1]\n",
    "    \n",
    "    fib_sequence = [0, 1]\n",
    "    for i in range(2, n):\n",
    "        next_fib = fib_sequence[i-1] + fib_sequence[i-2]\n",
    "        fib_sequence.append(next_fib)\n",
    "    \n",
    "    return fib_sequence\n",
    "\n",
    "# 测试斐波那契数列函数\n",
    "print(\"=== 斐波那契数列 ===\")\n",
    "fib_10 = fibonacci(10)\n",
    "print(f\"前10项斐波那契数列: {fib_10}\")\n",
    "print(f\"前5项斐波那契数列: {fibonacci(5)}\")\n",
    "print()\n",
    "\n",
    "# 10. 找出列表中的最大值\n",
    "def find_max(lst):\n",
    "    \"\"\"\n",
    "    不使用内置函数max()，找出列表中的最大值\n",
    "    \"\"\"\n",
    "    if not lst:\n",
    "        return None\n",
    "    \n",
    "    max_value = lst[0]\n",
    "    for num in lst[1:]:\n",
    "        if num > max_value:\n",
    "            max_value = num\n",
    "    return max_value\n",
    "\n",
    "# 测试找最大值函数\n",
    "print(\"=== 找出列表最大值 ===\")\n",
    "test_lists = [\n",
    "    [1, 5, 3, 9, 2],\n",
    "    [-1, -5, -3],\n",
    "    [10],\n",
    "    [3.14, 2.71, 1.41]\n",
    "]\n",
    "\n",
    "for lst in test_lists:\n",
    "    print(f\"列表 {lst} 的最大值是: {find_max(lst)}\")\n",
    "\n",
    "# 综合测试\n",
    "print(\"\\n=== 综合测试 ===\")\n",
    "print(f\"7的阶乘: {factorial(7)}\")\n",
    "print(f\"23是素数: {is_prime(23)}\")\n",
    "print(f\"'上海大学'反转: {reverse_string('上海大学')}\")\n",
    "print(f\"斐波那契前8项: {fibonacci(8)}\")\n",
    "print(f\"列表[45, 12, 89, 34, 67]的最大值: {find_max([45, 12, 89, 34, 67])}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d6308865-4b36-403a-b571-5d052f07531a",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
